home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / libs / knowhow4 / microsc.cpp < prev    next >
C/C++ Source or Header  |  1994-10-10  |  2KB  |  61 lines

  1. #include "microsc.h"
  2. #include "micro.h"
  3. #include "icon.h"
  4. #include "dim.h"
  5.  
  6. Microscope::Microscope(char* name, rect rec)
  7.     : Bl(rec, "", name, 12, FIXED, SHOW_BORDER,
  8.         SHOW_BORDER, 16, 16, 16)
  9.     {
  10.     rect r = textRect(Bl::w1->user_screen());
  11.     Micro* micro = new Micro(r);
  12.     insert(micro, 1);
  13.     micro->set_ret(RET_OK | RET_CANCEL);
  14.  
  15.     rect ok_r = rect(62, 0, 64, 1);
  16.     ok_r.origin.Y += 1;
  17.     ok_r.corner.Y += 1;
  18.  
  19.     Element* ok_element = new Element(ok_r, OK_ELEMENT,
  20.         BUTTON_BORDER, 16);
  21.  
  22.     ok_element->set_ret(1);
  23.     add(ok_element);
  24.  
  25.     assign(micro, cancel_element, AC_CANCEL);
  26.     assign(micro, ok_element, AC_OK);
  27.     }
  28. ////////////////////////
  29. void Microscope::show()
  30.     {
  31. // save the work area to the "copy.res" icon file
  32.     global_i[10] = 0;  // DATA_X
  33.     unlink("copy.res");                               // delete old
  34.     rect r = /*screenRect*/(r_draw_size);   // ATTENTION !!!
  35. //    r.origin -= area[STANDART_BORDER].origin;         // Change it if change
  36. //    r.corner -= area[STANDART_BORDER].corner;         // r_draw in main file
  37.  
  38.     rect work = get_dim(FIG_RECTANGLE, MOVE,
  39.       r, rect(r.origin, r.origin + icon_size(1)), icon_size(1));
  40.     global_i[10] = work.origin.X;
  41.     global_i[11] = work.origin.Y;  // DATA_Y
  42.     if(work.origin.X != work.corner.X)                // OK
  43.     save_image("copy.res", work.origin, 1);
  44.     else
  45.     return;                                       // CANCEL
  46.     Bl::show();
  47.     }
  48. //////////////////////
  49. void Microscope::exe(int act)
  50.     {
  51.     global_num = 1;
  52.     if(global_i[10] == 0)    // do not microscope
  53.     {
  54.     global_i[0] = 0;
  55.     e.key = EVENT_ESC;
  56.     e.what = KEYEVENT;
  57.     return;
  58.     }
  59.     Bl::exe(act);
  60.     global_num = 1;
  61.     }